/*
 * @lc app=leetcode.cn id=6 lang=golang
 * @lcpr version=30118
 *
 * [6] Z 字形变换
 */

// @lcpr-template-start

// @lcpr-template-end
// @lc code=start
func convert(s string, numRows int) string {
	if numRows == 1 {
		return s
	}
	m := len(s)
	res := ""
	// 第一行
	for i := 0; i < m; i += 2*numRows - 2 {
		res += string(s[i])
	}

	// 中间行
	for i := 1; i < numRows-1; i++ {
		for j := i; j < m; j += 2 * (numRows - 1) {
			res += string(s[j])
			if j+2*(numRows-1-i) < m {
				res += string(s[j+2*(numRows-1-i)])
			}
		}
	}

	// 最后一行
	for i := numRows - 1; i < m; i += 2*numRows - 2 {
		res += string(s[i])
	}

	return res
}

// @lc code=end

/*
// @lcpr case=start
// "PAYPALISHIRING"\n3\n
// @lcpr case=end

// @lcpr case=start
// "PAYPALISHIRING"\n4\n
// @lcpr case=end

// @lcpr case=start
// "A"\n1\n
// @lcpr case=end

*/

